자료형 체계
✒️ 2025-05-14 20:28 내용 수정
값, 표현식, 함수, 모듈 등을 분류하는 규칙의 집합
- 참고 자료 : 위키백과 자료형 체계
- 계산될 값을 분류하여 특정한 종류의 프로그램 오류가 일어나지 않음을 증명하는 계산 가능한 방법으로 정의된다.
- 자료형 오류 : 자료형에 맞지 않는 값이 할당되는 것이다.
- 논리적으로 맞지 않는 자료형 사이의 연상이나 잘못된 메모리에 접근하는 경우가 해당된다.
- ex) 숫자 자료형에 문자 값이 할당되는 경우
- 정형(typing) : 값에 자료형을 할당하는 것이고, 메모리 상의 비트의 나열에 의미를 부여한다.
- 자료형 체계는 컴파일러가 무의미하거나 잘못될 가능성이 있는 코드 감지를 도와주며, 최적화에 도움을 줄 수 있고, 프로그래머의 의도를 보여줄 수 있으며, 추상화(또는 모듈화) 기능을 제공한다.
자료형 검사
프로그램이 자료형의 제약 조건을 지키는지 검증하는 것
1. 정적 정형(Static type checking)
- 자료형 검사를 컴파일 타임에 수행하는 것이다.
- 정적 정형 언어는 C, C++, C#, Go, Java, Pascal, Perl 등이 있다.
- 컴파일 타임에 결정될 수 있는 자료형 정보만을 평가하지만, 프로그램의 가능한 모든 입력에 대해 검사 조건을 확인할 수 있다.
- 프로그램이 실행될 때마다 매번 자료형 검사를 반복할 필요가 없다.
2. 동적 정형(Dynamic type checking)
- 자료형 검사를 런타임에 실행하는 것이다.
- 동적 정형 언어는 Groovy, JavaScript, PHP, Python, Ruby 등이 있다.
- 동적 정형에선 값은 자료형을 가지고 있지만 변수는 그렇지 않아 모든 자료형의 값을 가질 수 있다.
- 동적 정형 언어는 일반적으로 모든 런타임 개체가 자료형 정보를 함께 가지고 있다.
- 동적 정형에선 런타임에서 예상 못한 값이 발생하거나 그 자료형에 대한 무의미한 작업이 적용되는 런타임 자료형 오류가 발생할 수 있다.
3. 둘의 조합
- Java와 다른 표면에서 정적으로 정형된 언어의 경우, 하위 형변환 및 런타임 자료형 검사에 따라 동적 정형 형태의 작업을 지원한다.